/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/10 15:07
 * @Copyright
 */
package IO2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
使用FileInputStream + FileOutputStream完成文件的拷贝
拷贝的过程是一边读，一边写。
使用以上的字节流拷贝文件的时候，文件类型随意，什么样的文件都能拷贝
 */
public class Copy1 {
    public static void main(String[] args) {
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {
            fis=new FileInputStream("E:\\code\\TestDemo\\src\\demo\\IO2\\temp");
            fos=new FileOutputStream("");

            //最核心的：一边读 一边写
            byte[] bytes=new byte[1024*1024];//1MB(一次最多拷贝)
            int readCount=0;
            while ((readCount=fis.read(bytes)) !=-1){
                fos.write(bytes,0,readCount);
            }

            //刷新，输出流最后要刷新
            fos.flush();
        }catch (FileNotFoundException e){
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            //分开try 不要一起try
            //一起try的时候，其中一个出现异常，可能会影响到另一个流的关闭
            if (fis !=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (fos !=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
